import numpy as np


def bayes(q, a, t, u):
    # 第一类样本均值
    # a1 = np.sum(a[0, :]) / 60  # 第一列均值
    a1 = np.mean(a[0, :])
    a2 = np.mean(a[1, :])  # 第二列均值`
    a3 = [a1, a2]
    # print(a1)
    # print(a2)
    print(f'第{q}类样本均值：', a3)

    # 求解第一类样本方差
    # a4 = np.sum((a[0, :] - a1 * np.ones((1, 60))) ** 2) / 59
    a4 = np.var(a[0, :], ddof=1)  # ddof=1 采用无偏估计计算方差
    a5 = np.var(a[1, :], ddof=1)
    a6 = [a4, a5]
    print(f'第{q}类样本方差：', a6)

    # 利用贝叶斯公式求出均值的估计值
    a7 = 60 * t[0] * a1 / (60 * t[0] + a4) + a4 * u[0] / (60 * t[0] + a4)
    a8 = 60 * t[1] * a2 / (60 * t[1] + a5) + a5 * u[1] / (60 * t[1] + a5)
    a9 = [a7, a8]
    # print(a7)
    # print(a8)
    print(f'第{q}类样本均值估计值(贝叶斯公式求解）：', a9)


# 设置方差
c = [0.05, 0.05]
# 设置先验估计参数
d = [0.93, 0.94]

# 生成第一类样本
m = np.random.uniform(0.6, 1.2, size=(2, 60)).round(1)  # 生成范围在（0.6,1.2）之间2*60的样本，并保留一位小数
print('第一类样本数据：', m)
bayes(1, m, c, d)
print('\n')

# 生成第二类样本
x = m[0, :] + 0.1  # 生成第一行数据
y = m[1, :] - 0.1  # 生成第二行数据
n = np.vstack((x, y))  # 将两行数据进行垂直拼接
# print(x)
# print(y)
print('第二类样本数据：', n)
bayes(2, n, c, d)
